tg-me.com/zen_of_python/4253
Last Update:
Из гайда по безопасности Django
Фреймворк известен своей философией «батарейки в комплекте». Однако даже с его встроенными средствами защиты, безопасность приложения во многом зависит от разработчика.
Современные веб-приложения сталкиваются с множеством угроз. Хотя Django предоставляет встроенные механизмы защиты от многих из них, полезно ознакомиться с основными InfoSec-практиками.
Обновление Django и зависимостей
Регулярно «освежайте» версию фреймворка и сторонних библиотек, они нередко содержат хотфиксы в контексте безопасности.
Передача данных по HTTPS
Обязательно настраивайте свой веб-сервер, будь то nginx или что другое, на HTTPS. SSL-сертификат можно получить бесплатно на letsencrypt.com. Библиотека certbot даже позволяет настроить автопродление серта.
Ограничение доступа к базе данных
Хотя Django ORM защищает от SQL-инъекций, дополнительные меры не повредят:
— Ограничьте права пользователя БД до необходимого минимума;
— Регулярно создавайте резервные копии и шифруйте данные;
— Используйте ORM Django.
Если необходимо использовать сырой SQL, спасет параметризация. В примере ниже драйвер БД экранирует значение username:
from django.db import connection
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM auth_user WHERE username = %s", [username])
Встроенные средства безопасности
Создатели проекта предоставляет множество встроенных механизмов безопасности:
— Добавьте
django.middleware.security.SecurityMiddleware
в список MIDDLEWARE
;— Настройте заголовки безопасности, такие как
Content-Security-Policy, X-Content-Type-Options, X-Frame-Options
.Аутентификация
— Реализуйте многофакторную аутентификацию с помощью пакетов, таких как django-otp;
— Применяйте ролевую модель доступа для управления правами пользователей.
Полезные библиотеки | Misc
Ниже представлена слегка эклектичная, но полезная подборка тулов, прямо или косвенно повышающих безопасность вашего сайта:
— django-ratelimit ограничит частоту запросов;
— django-guardian управляет объектно-ориентированными разрешениями;
— SonarQube / semgrep.dev: автотестирует ваш проект на предмет эксплойтов (DevSecOps).
#безопасность #основы
@zen_of_python
BY Zen of Python

Share with your friend now:
tg-me.com/zen_of_python/4253